﻿/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/x-www-form-urlencoded
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var get = function (url, success, data, async, contentType, dataType, cache, timeout) {
    ajaxfn(url, "get", success, data, async, contentType, dataType, cache, timeout);
}

/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/x-www-form-urlencoded
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var post = function (url, success, data, async, contentType, dataType, cache, timeout) {
    ajaxfn(url, "post", success, data, async, contentType, dataType, cache, timeout);
}

/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/json
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var postJson = function (url, success, data, async, dataType, cache, timeout) {
    ajaxfn(url, "post", success, data, async, 'application/json', dataType, cache, timeout);
}

/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/x-www-form-urlencoded
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var put = function (url, success, data, async, contentType, dataType, cache, timeout) {
    ajaxfn(url, "put", success, data, async, contentType, dataType, cache, timeout);
}
/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/json
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var putJson = function (url, success, data, async, dataType, cache, timeout) {
    ajaxfn(url, "put", success, data, async, 'application/json', dataType, cache, timeout);
}

/**
* url地址 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/x-www-form-urlencoded
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var del = function (url, success, data, async, contentType, dataType, cache, timeout) {
    ajaxfn(url, "delete", success, data, async, contentType, dataType, cache, timeout);
}

/**
* url 地址 不为空
* type get post put delete 不为空
* successfn成功返回的方法 不为空
* data参数{} 可空
* async 同步异步 默认true
* contentType 默认application/x-www-form-urlencoded
* dataType 默认json
* cache 默认false
* timeout 默认600000
**/
var ajaxfn = function (url, type, success, data, async, contentType, dataType, cache, timeout) {
    var option = {
        url: url,
        type: type,
        async: async,
        cache: cache,
        contentType: contentType,
        data: data,
        timeout: timeout,
        dataType: dataType,
        success: success
    }; 
    ajax(option);
}

/**
* option {}
**/
var ajax = function (option) {
    if (option.url == null || option.url == ""
        || option.type == null || option.type == ""
        || option.success == null || option.success == "") {
        return false;
    }
    if (typeof (option.async) == "undefined") {
        option["async"] = true;
    }
    if (option.contentType == null || option.contentType == "") {
        option["contentType"] = "application/x-www-form-urlencoded"
    }
    if (option.dataType == null || option.dataType == "") {
        option["dataType"] = "json";
    }
    if (typeof (option.cache) == "undefined") {
        option["cache"] = false;
    }
    if (option.timeout == null || option.timeout == "") {
        option["timeout"] = 600000;
    }
    if (option.contentType == "application/json") {
        option["data"] = JSON.stringify(option.data);
    }
    
    option["error"] = errorfn;
    //回调成功预处理
    var successfn = option.success;
    option.success = function (json, textStatus) {
        if (!json.Status) {
            console.log(json);
        }
        successfn(json,textStatus);
    }

    $.ajax(option);
}

/**
* 出错处理
**/
var errorfn = function (json, textStatus, errorThrown) {
    console.log(json);
    var str;
    if (json.responseJSON != null) {
        str = '<div><b>Message:</b> ' + json.responseJSON.Message + '</div>';
        str += '<div><b>MessageDetail:</b> ' + json.responseJSON.MessageDetail + '</div>';
    } else {
        str = '<div><b>status:</b> ' + json.status + '</div>';
        str += '<div><b>statusText:</b> ' + json.statusText + '</div>';
    }
    bootbox.alert('<div><h4>' + textStatus + ':</h4></div><div>' + str + '</div>');
}